這篇讓我們來談談有效練習,當然,不同的科目做法會不盡相同,但這系列主要是寫給工程師的,因此在這邊就讓我僅聚焦在數學、物理、程式設計這種很偏向邏輯思考的領域,要怎樣才能有效的建立心智表徵。
大家學生時代有沒有一直聽老師說數學要理解,不是用背的。
其實所謂的理解,也可以想成是要你建立自己的心智表徵。今天先讓我用個人經驗來給個例子,明天再帶大家看相同概念的學習理論跟工具。
我高中時物理成績一直遠好於其他科目,因此大學也理所當然的選定台大物理系做為第一志願。到了大三大四,我才發現自己似乎也沒什麼特別的物理天份,高中能學得特別好,單純是誤打誤撞的掌握了一個正確的學習模式,現在就讓我來分享這個方法。
小時候自知記憶力很差的我,聽到一個新概念或解題方式不出三天一定忘掉(隨著年紀變大,現在可能只剩 30 分鐘),但只要做過以下流程,就記的起來,而且很久都不會忘。
看到一個新概念,先想辦法用自己的邏輯去重新解釋一遍,接著要拿許多題目去反覆確認,如果我的解釋套用到題目上失敗,就要回去重想,直到找到一個可以通過眾多挑戰仍然正確無誤的解釋,我才會放心離開。
而這個所謂我自己找到的解釋方式很重要,一定得是自己一步一腳印建立出來的我才會記得。若是聽別人的解釋,不管有多厲害、多精彩、聽到的當下多有體悟,他仍然只會在短期記憶中暫時停留,不久後就會被我遺忘。而這整套思索創建的流程,其實就是一個建立內在心智表徵的絕佳方式。
當然很多基礎解釋還是得來自課本,但你可以自由組合去尋找新的解釋,例如課本跟你說 A 會造成 B,C 會影響 D,那我就會去試著延伸,假如這樣說是對的,我現在讓 A 跟 C 以某個狀況組合,應該會讓 B 與 D 呈現某種結果。而這時候就是關鍵,有了這個想法,去找類似的題目(甚至自創)計算一次,並想辦法驗證答案(也可以問老師)。一但答案正確,代表我重新用自己的方式理解了一次 A->B 和 C->D 兩個概念,而不只是背課本的解釋而已。
雖然重複聽一個觀念很多次,我也有辦法一時好似背起來,但差別在於,透過自己思索出來的解釋,整個思考脈絡也都會記得,而不只得到一個結果,而脈絡本身也是極有價值的知識,可以幫助你更快速的建立其他相關知識。若只是背下別人的解釋,很容易題目稍改一下就不會做了。
極端一點說,對於我覺得有機會自己想出來的東西,我會很排斥看到解答,因為看了就會有先入為主的想法,像被劇透一樣,反而成了思路的阻礙。假如真的不小心看了,我會故意先放著不理他好幾天,之後再回去重寫,這時候通常忘得差不多,又可以靠自己重新打造自己的思維脈落。
而這個習慣後來也被我帶到轉職為軟體工程師的過程中,做法其實也是一樣的,每當學習到一個新的技巧,最重要的第一件事情,一定是先找個題目來實做一次看看。例如首次學到迴圈的概念,我就會去想這東西能做什麼,例如有沒有可能弄個 99 乘法表出來?接著當你又學到了陣列,那就會去想著如何透過結合這兩者,玩出新的花樣,例如找出學生成績的平均與每個人的標準差。
到了後來更進階一些,例如學到一個 network request & response 的新概念,一定也是開個網頁,想出幾個功能實作玩玩看。或是聽到一個 SQL query 效能調整的概念,就造一個情境實驗看看結果如何。
或許有些人覺得這些聽起來很基本,但其實隨著知識成長,問題的難度也不斷上升,往往想一個案例做一次驗證的過程會越來越困難,很多時候就會產生惰性,覺得啊我好像聽懂了啦,但實驗一次好麻煩喔,應該不需要吧?我自己也發生過很多次這樣的時刻,但往往就是這樣姑且的心態,未來有一天就會突然踩坑,發現怎麼跟我想的都不一樣!事情原來一直都不是這樣!
當這種這種錯誤又模糊的概念逐漸累積的時候,往往會是一個隱形的炸彈,就如堆積 Lagacy Code 一般,當下可能看似沒問題,但其實一直潛伏在你的知識體系中,直到有一天給你帶來麻煩。而這麻煩最終會體現在兩方面。
所以我以前常跟學生說:任何你沒有完全搞清楚就輕易放過的東西,都會在未來的某一天又跑回來找你
而這些問題的解決方式其實很簡單,就是堅持有效的練習:建立想法,實際驗證,錯誤反饋修正。只要你能把這幾件事做扎實,每次都這樣做,然後習慣不斷地問自己我真的懂了嗎?我真的想清楚了嗎?還有什麼是可以嘗試的?久而久之累積下來,你就會發現比以前的自己厲害了很多,看事情清澈透明了很多,而背後原因,就是你的心智表徵被良好的建立起來了,成為你未來的助力,讓你朝著心目中的高手又踏踏實實的更近了一步。